The user interface of a piece of data processing apparatus is a term that is used to describe the way that apparatus interacts with its user. A particularly important part of a user interface is the way the apparatus displays information the user of the device. Considerable attention is directed at this aspect of user interfaces, and one approach that has been successfully adopted is the so called `windowing interface`.
In a windowing system such as that used in the Operating System/2 computer program produced by International Business Machines Corporation (Operating System/2 is a trade mark of International Business Machines Corporation), the display is divided into a number of rectangular areas each displaying a piece of text or graphics as appropriate. The windows can be compared to pieces of paper on a desk top, with each window capable of overlapping and obscuring windows having a lower priority in the display. More recent windows systems also provide multiprocessing facilities with which several application programs may be concurrently active. A window may be dedicated to a particular application such as word processing or spreadsheet or alternatively to different threads within a single application, e.g. a window may be allocated to each different part of a word processing application such as pagination, printing, spell checking and the like--different activities on different documents can be controlled concurrently through each window.
One feature of these windowing systems is the provision of so called dialog boxes using which data relating to a preceding action can be entered. An example of this would be if a window displayed a list of names and telephone numbers, a possible action for selection would be to edit the details of an entry. The user would highlight the entry concerned in the list names and then select the action of edit from the list of actions. Having done this the system would display a dialog box possibly overlapping a portion of the window containing the names list. The dialog box would display the full details of that entry, and then by moving around and over typing portions the entry can be edited.
Dialog boxes in existing systems fall into two categories. The is first is modeless dialog boxes, which are such that when they are produced they can be completed at any time, and any other action can be taken in another window whilst the dialog box is still displayed. The second is modal dialog boxes, which come in two forms. System modal dialog boxes are such that when produced no other action may be made by the user until that system modal dialog box has been completed and removed. Application modal dialog boxes are such that when produced no action may be made by the user within the application to which that dialog box belongs until the dialog box has been completed and removed.
The present invention is concerned with the problem of producing data processing apparatus with a user interface that is easier to understand and work with.
Viewed from one aspect the invention provides a method of manipulating data stored by a data processing apparatus having a windowing user interface comprising the steps of:
detecting a user input requesting display for manipulation of data within a logically defined division of an application program executing on said data processing apparatus, PA1 creating a dialog window displaying said data for manipulation, PA1 storing mode data indicating said dialog window within said logically defined division is being displayed, and PA1 upon a subsequent request to manipulate data within a given logically defined division, rejecting said subsequent request if said mode data indicates a dialog window for said logically defined division is being displayed and said subsequent request is determined to be of a type capable of conflicting with manipulation being made using said dialog window being displayed. PA1 creating a dialog window displaying said data for manipulation, PA1 storing mode data indicating said dialog window within said logically defined division is being displayed, and PA1 upon a subsequent request to manipulate data within a given logically defined division, rejecting said subsequent request if said mode data indicates a dialog window for said logically defined division is being displayed and said subsequent request is determined to be of a type capable of conflicting with manipulation being made using said dialog window being displayed.
The invention both recognizes and solves the problem that while ensuring data integrity within an application is maintained it is important not to excessively restrict the different actions a user may wish to undertake with the data processing apparatus.
The modeless dialog boxes allow the user complete freedom to undertake other actions with the system, but suffer from the disadvantage of not protecting the user from taking actions which disrupt data integrity, e.g. the user can have open a dialog box for editing an entry in data database, while at the same deleting that entry in the database using another part of the application.
The modal dialog boxes, either application or system modal, do protect the user from producing integrity problems, but suffer from the disadvantage of restricting the users freedom more than is truly necessary.
The invention provides a mechanism that is responsive to whether or not a dialog box within a part of an application is already open and whether the further request is capable of creating a data integrity problem with that change being made in the dialog box already open. Thus, data integrity is protected while the restriction of actions possible is held to only a part of the application and also to only requests that could cause data integrity problems.
An example would be a database application for manipulating a list of peoples' telephone numbers or a list of books. The type of actions you may wish to take against each of these lists would be edit an item, add an item, delete an item or sort the list. The list of users and books are quite separate and so would be defined to be within different logically defined divisions of the program--changes to either list wouldn't effect the integrity of the other.
Within a given list if it is decided to edit the details of a particular user then the user is selected from the list of users and the edit action selected from the list of actions thereby triggering production of an edit dialog box for that user. Once that dialog box was open then the other actions which pose a threat to data integrity would be blocked until the editing had been finished and the edit dialog box removed.
A preferred feature of the invention is that said mode data of said dialog window stores an identifier to said logically defined division, said logically defined division identifier being used for directing movement of a cursor between said dialog window and said logically defined division to switch activity therebetween. This feature allows the user to move between the dialog window and other parts of the logically defined division thereby giving a clear visual indication of the link between them. This is particularly useful when more than one dialog box is displayed, each relating to a different logically defined division of the application. In such circumstance each logically defined division could have a number of dialog boxes associated with it each being independently movable. The display could become jumbled and the user may become confused as to which elements of the display relate to one another. By providing a mechanism for rapidly moving focus (i.e. cursor and active status) by preferably using repeated operation of a single key on a keyboard the link between the items is made clear and rapid movement between them is possible.
In preferred embodiments of the invention if said subsequent request does not conflict then a subsequent dialog window is created for said logically defined division and any further subsequent request is tested for conflict with all manipulations being made using dialog windows within that logically defined division. This feature allows more than one dialog box to be created within a logically division to aid the flexibility of the system and yet still protects data integrity. An example would be if the edit telephone number list dialog window included an option of displaying STD (national dialing) codes within another dialog window. This option would be allowed to be activated as no conflict in integrity could arise.
In preferred embodiments of the invention said mode data for each dialog box provides an identifier to one or more other dialog windows of said logically defined division, said dialog window identifier being used for directing movement of a cursor between dialog windows within said logically defined division to switch activity therebetween. The dialog windows within a logically defined division may be thought of as forming a chain of dialog windows between which the user can move to manipulate data within that logically defined division. The provision of this pointer enables the application to move between dialog windows in response to a single command, such as use of the cursor keys. The movement between dialog boxes can be considered as equivalent to movement between links in a chain.
A further preferred feature of the invention is that said logically defined division stores an identifier to a main application action menu, said main application menu identifier being used for directing movement of a cursor between said logically defined division and said main application action menu to switch activity therebetween. In this way the complete chain of all dialog windows for a given logically defined division, the root action menu for the given logically defined division and the main application action menu can be quickly moved between and a clear visual indication of their hierarchical relationship given.
Viewed from a second aspect the invention provides a data processing apparatus having a display, a windowing user interface and dialog box control logic for: detecting a user input from a user input device requesting display for manipulation of data within a logically defined division of an application program executing on said data processing apparatus,